Managing storage array operations that cause loss of access to mirrored data

ABSTRACT

Storage array operations, such as code downloads and other operations of the type that cause loss of access to portions of the storage array, are managed in a manner that preserves access to other portions of the storage array so that other storage array operations, such as data synchronization, can continue.

TECHNICAL FIELD OF THE INVENTION

The invention relates generally to data storage arrays and, morespecifically, to managing storage array operations that cause loss ofaccess to mirrored data.

BACKGROUND OF THE INVENTION

A storage array or disk array is a data storage device that includesmultiple disk drives or similar persistent storage devices. A storagearray can allow a host (computer) system to store and retrieve largeamounts of data in an efficient manner. A storage array also can provideredundancy to promote reliability, as in the case of a Redundant Arrayof Inexpensive Disks (RAID) storage array or other mirrored storagearray.

In a mirrored storage array, some or all of the data that is stored onone disk drive is similarly stored on one or more other disk drives.That is, some or all of the contents of a disk drive mirror some or allof the contents of some or all of the other disk drives of the array.The set of redundantly stored data is commonly referred to as a mirror.When a host system writes data to the storage array, the storage arraycontroller copies the data onto each disk drive in the mirror, either bysimultaneously writing the data to each disk drive in the mirror or bywriting the data to one or more disk drives in the mirror and thencopying the data from those disk drives to other disk drives in themirror. The process of copying data from one disk drive to another orotherwise ensuring that each disk drive in the mirror contains the samedata is commonly referred to as mirroring.

To ensure that the data does not differ among disk drives in the mirror,an operation commonly referred to as synchronization can be performed.Synchronization is typically performed periodically or at some timeafter any event that could potentially result in some of the datadiffering from one disk drive in the mirror to another. For example,synchronization can be performed after a disk drive is removed andreplaced, to ensure that the contents of the disk drive exactly mirrorthose of the other disk drives in the array. Synchronization cannot beperformed during certain storage array operations that cause loss ofaccess to disk drives in the mirror. For example, synchronizationgenerally cannot be performed while the storage array is being updatedwith new software or firmware. In some instances, downloading such newsoftware involves storing the software (or firmware) on all of the diskdrives in the storage array essentially simultaneously and thenrebooting them. Until the disk drives are fully rebooted, the hostsystem cannot access the storage array, and the system controller cannotperform synchronization or other operations requiring availability ofthe disk drives.

SUMMARY

The invention relates to managing storage array operations, such assoftware downloads and other operations of the types that cause loss ofread and write access to storage devices (e.g., disk drives) containingmirrored data, in a manner that promotes maximal availability of themirrored data during the operations.

The operation, such as a software download, is successively initiated oneach of a number of groups of one or more storage devices in the array.During the operation on a group of storage devices, two groups ofstorage devices other than the group of storage devices being operatedupon can be synchronized. The operation is not initiated on a next groupof storage devices until the operation on a previous group has completedand any synchronization between other groups has completed.

In exemplary embodiments, disk drives are grouped, and code downloadsare staggered or successively performed from one group of one or moredisk drives to the next group of one or more drives. While a group ofdisk drives is undergoing the download, synchronization can be performedbetween any other groups of disk drives that are not undergoing thedownload.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 is a block diagram of a storage array in accordance with anexemplary embodiment of the invention.

FIG. 2 is a block diagram of an exemplary storage array controller ofthe storage array of FIG. 1.

FIG. 3 is a block diagram of an exemplary disk drive of the storagearray of FIG. 1.

FIG. 4 is a flow diagram, illustrating a method of operation of thestorage array of FIG. 1 in accordance with the exemplary embodiment.

FIG. 5 is similar to FIG. 1, illustrating the grouping of storagedevices in accordance with the exemplary method of operation.

FIG. 6 is a sequence diagram, illustrating a sequence of operations inthe storage array of FIG. 1 in accordance with the exemplary embodiment.

FIG. 7 is similar to FIG. 6, illustrating an alternative sequence ofoperations.

DETAILED DESCRIPTION OF AN ILLUSTRATIVE EMBODIMENT

As illustrated in FIG. 1, in an illustrative or exemplary embodiment ofthe invention, a storage array 10 includes a storage array controller12. Although a storage array can have any number and type of storagedevices, in the exemplary embodiment storage array 10 is describedherein for purposes of illustration as having 15 disk drives 14, 16, 18,20, 22, 24, 26, 28, 30, 32, 34, 36, 38, 40 and 42. Also, although in theexemplary embodiment the storage devices are disk drives, in otherembodiments the storage devices can comprise any other type ofpersistent data storage device. In addition, although such storagedevices can be organized or arranged in any suitable manner, forpurposes of illustration in the exemplary embodiment, disk drives 14,16, 18, 20 and 22 are included in a first tray 44; disk drives 24, 26,28, 30 and 32 are included in a second tray 46; and disk drives 34, 36,38, 40 and 42 are included in a third tray 48. Trays 44, 46 and 48supply power, ground and similar signals to their respective disk drivesand otherwise provide electrical and mechanical connections for theirrespective disk drives. As known in the art, it is desirable to organizethe disk drives of a storage array into such multiple trays or similarunits to aid maintenance and diagnostics and to support redundancymeasures.

Storage array controller 12 controls high-level operation of storagearray 10, receiving and acting upon requests from a host (computer)system (not shown for purposes of clarity) to write data to and readdata from storage array 10. As storage array 10 acts upon such write andread requests in the conventional manner well understood in the art,such processes are not described in this patent specification(“herein”). It can be noted that to write data, storage array controller12 receives the data from the host, selects one or more of disk drives14-42, and causes the selected ones of disk drives 14-42 to write, i.e.,record, the data on its persistent storage medium (e.g., magnetic disk).Similarly, to read data, storage array controller 12 selects one or moreof disk drives 14-42, causes the selected ones of disk drives 14-42 toread, i.e., retrieve, data from its storage medium, and transmits theretrieved data to the host. In addition to controlling such writing andreading of data, storage array controller 12 controls the mirroring ofdata. Some or all of the data stored on disk drives 14-42 can bemirrored data. That is, data that is recorded on one of disk drives14-42 is also recorded on another one of disk drives 14-42. As storagearray 10 can perform data mirroring in the conventional manner wellunderstood in the art, mirroring is not, by itself, described herein.Storage array 10 can also perform any other conventional functioncommonly performed by such storage arrays, such as functions relating tostorage array maintenance or upgrade.

Although storage array controller 12 can have any suitable structure orarchitecture that enables it to control or otherwise effect thefunctions described herein, an exemplary structure in which thefunctions are performed at least in part under the control of softwareelements is illustrated in FIG. 2. The combination of such software orfirmware elements and the hardware elements with which they interactconstitutes a programmed processor system 50 that is programmed orconfigured to effect the functions or methods of operation describedherein. Programmed processor system 50 includes at least a processor 52and memory 54. Programmed processor system 50 can effect the writing ofdata to and reading of data from disk drives 14-42 under control of aread/write software element 56. Likewise, programmed processor system 50can effect the synchronization of data between two or more of diskdrives 14-42 under control of a synchronization software element 58. Inaddition, programmed processor system 50 can effect maintenance, upgradeand similar storage array operations under control of a utility softwareelement 60. In addition to any conventional maintenance and upgradeoperations, utility software element 60 can reflect the downloadingmethods described below with regard to FIG. 4. Storage array controller12 can further include various suitable interfaces 62 that aidinterfacing it with disk drives 14-42 and a host system.

Although not shown for purposes of clarity, storage array controller 12can include any other suitable software or hardware elements of thetypes commonly included in storage array control systems. Also, althoughthe above-described software elements are depicted for purposes ofillustration as stored in or residing in memory 54, as persons skilledin the art to which the invention relates understand, such softwareelements may not reside simultaneously or in their entireties in memory54 or other such storage medium. Rather, in accordance with conventionalcomputing principles, such software elements can be retrieved intomemory 54 in portions (e.g., instructions, code segments, files,libraries, etc.) on an as-needed basis from one or more suitablesources, such as one or more of disk drives 14-42 or other disk drivesor storage devices, via a network connection from a remote device, etc.It should be noted that the combination of one or more ofabove-described software elements or portions thereof and memory 54 orother computer-readable medium on which they are recorded constitutes a“computer program product” as that term is used in the patent lexicon.

Each of disk drives 14-42 can have the exemplary structure shown in FIG.3. A disk drive controller 64 controls the read, write and otheroperations in the conventional manner to read data from and write datato the magnetic disk or other storage medium 66. The data can includeuser data 68, which is the data that the host reads and writes to andfrom storage array 10 in the normal course of operation (i.e., ratherthan for maintenance, upgrade or similar purposes), and configurationdata 70, which is data relating to the disk drive configurations, volumemapping, and other system information of the type conventionallymaintained by storage arrays. Although not shown for purposes ofclarity, still other types of data may be stored on storage medium 66.

Storage array 10 cannot operate optimally without access toconfiguration data 70. For example, if storage array 10 is powered down,restoring storage array 10 to the state in which it powered downrequires access to configuration data 70 upon powering up. Accordingly,in storage array 10 of the exemplary embodiment, as in some conventionalstorage arrays, configuration data 70 is mirrored among disk drives14-42. That is, but for the undesirable effect of an event that causesloss of data synchronization between two or more of disk drives 14-42,the same configuration data 70 that is stored on one of disk drives14-42 is stored on every other one of disk drives 14-42.

Disk drive controller 64 operates at least in part under the control offirmware 72 stored in a suitable memory 74 such as an EPROM(electrically programmable read-only memory). Each of disk drives 14-42can further include various suitable interfaces 76 that aid interfacingit with storage array controller 12, others of disk drives 14-42, orother elements of storage array 10.

As illustrated in FIG. 4, in an exemplary method of operation storagearray 10 can manage a storage array operation, such as a download offirmware 72 (FIG. 3) or other operation of a type that causes loss ofread and write access to configuration data 70 (FIG. 3) or othermirrored data, in a manner that promotes availability of the mirroreddata during the download or other such operation. Storage array 10 canoperate as described herein with regard to FIG. 4 in any suitablemanner. For example, the method or similar methods can be reflected atleast in part by program code, data structures, data or similar aspectsof utility software element 60 (FIG. 2). In view of the descriptionsherein, persons skilled in the art will readily be capable of providinga suitable utility software element 60 or otherwise be capable ofprogramming or configuring software elements, hardware elements orcombinations thereof to cause storage array 10 to operate as describedherein.

The method can begin at any suitable time, such as upon receipt of anindication (e.g., from the host) that a firmware download is to begin.As indicated by block 78, in the exemplary embodiment disk drives 14-42are first grouped. That is, one or more of disk drives 14-42 is includedin a first group, one or more others of disk drives 14-42 are includedin a second group, etc. The purpose of grouping disk drives 14-42 isdescribed below. Although in the exemplary embodiment the firmwaredownload operation is to be performed upon all drives 14-42 containingthe mirrored data, in an instance in which the operation is to beperformed upon fewer disk drives, only those disk drives that are tohave the operation performed upon them need be grouped.

As indicated by block 80, a firmware download operation is initiated ona first group of disk drives 14-42. A firmware download involves storagearray controller 12 receiving new or updated firmware 72 from a sourcesuch as the host system and routing the firmware to the appropriate onesof disk drives 14-42, which in turn stores firmware 72 in memory 74.After firmware 72 has been downloaded to one of disk drives 14-42 inthis manner, storage array controller 12 causes that one of disk drives14-42 to reboot. Until the download-and-reboot operation has completed,storage array controller 12 has no access to that one of disk drives14-42, i.e., storage array controller 12 cannot read data from or writedata to that one of disk drives 14-42. In some prior storage arrays, thestorage array controller would route the new or updated firmware to alldisk drives in the array essentially simultaneously and cause them toreboot essentially simultaneously. As a result, storage array controller12 would have no access to the configuration data and thus be unable toread and write user data properly until the disk drives had fully bootedup. The same problem of rendering mirrored data inaccessible or lessaccessible to the system controller, host, or other system or devicethat requires access to such mirrored data would occur in any otherinstance in which a disk array operation is performed that renders onemore drives or other storage devices inaccessible. As described below,in the exemplary method the operation (e.g., a firmware download) isperformed upon successive groups of disk drives 14-42, such that whileone group is having the operation performed upon it, two or more othergroups can undergo synchronization of the mirrored data.

Once the firmware download or other operation is completed, e.g.,firmware 72 has been downloaded to a group of disk drives 14-42 and thegroup has been rebooted, the same operation can be initiated on anothergroup of disk drives 14-42. As indicated by blocks 82 and 84, the methoddoes not proceed with initiating the operation on another group of diskdrives 14-42 until the operation has completed on the previous group.Once the operation has been initiated on another group of disk drives14-42, a synchronization of two other groups of disk drives 14-42 can beinitiated (i.e., other than the group undergoing the operation), asindicated by block 86. With regard to block 88, the method does notproceed with initiating the operation on still another group of diskdrives 14-42 until both the operation has completed on the previousgroup and the synchronization has completed. As indicated by block 90,when there are no further groups on which the operation is to beperformed, the method ends.

The sequence or succession of groups upon which the operation (e.g., afirmware download) is performed can be determined in any suitable mannerand at any suitable time. For example, the groups and the order in whichthey are operated upon can be determined in response to receipt of anindication (e.g., from the host system) that a firmware download is tobegin. Alternatively, the groups can be pre-determined, i.e., determinedprior to any indication that a firmware download is to begin.

As illustrated in FIG. 5, disk drives 14-42 can be grouped so that eachgroup includes disk drives from more than one tray. Including drivesfrom more than one tray in each group helps maximize the likelihoodthat, in the event of a loss of one or more trays (e.g., power loss,malfunction, removal of tray, etc.), system controller 12 will be ableto retrieve configuration data 70 or other data needed for operationfrom one or more remaining trays. For example, there can be threegroups, referred to as Group A, Group B and Group C in the exemplaryembodiment, each of which includes drives from at least two of trays 44,46 and 48. A grouping that is still more resistant to the adverseeffects of tray loss involves including at least one drive from each oftrays 44, 46 and 48 in each group. Still further resistance to theadverse effects of tray loss can be provided by including a similarnumber of disk drives from each of trays 44, 46 and 48 by, for example,selecting them in a round-robin fashion as in the exemplary groupingshown in FIG. 5: Group A is defined by selecting a first disk drive 14from tray 44, a second disk drive 24 from tray 46, a third disk drive 34from tray 48, and, returning in a round-robin fashion to tray 44,selecting fourth disk drive 16 from tray 44, and a fifth disk drive 26from tray 46; Group B is defined by, continuing to the next tray 48,selecting a first disk drive 36 from tray 48, a second disk drive 18from tray 44, a third disk drive 28 from tray 46, a fourth disk drive 38from tray 48, and a fifth disk drive 20 from tray 44; and continuing totray 46, Group C is defined by selecting a first disk drive 30 from tray46, a second disk drive 40 from tray 48, a third disk drive 22 from tray44, a fourth disk drive 32 from tray 46, and a fifth disk drive 42 fromtray 48. As noted above, Groups A, B and C can be defined at anysuitable time, such as in response to receipt of an indication that afirmware download is to begin or, in other embodiments, prior to anysuch indication. Also, although in the exemplary embodiment three groupsof five drives each are defined, in other embodiments there can be anyother number of groups having any other number of drives.

The exemplary grouping described above with regard to FIG. 5 can be usedin the method described above with regard to FIG. 4. In the followingexample using this grouping, the operation that renders the driveinaccessible is a firmware download of the type described above, and themirrored data is configuration data of the type described above. Aresulting sequence of operations is illustrated in FIG. 6.

As illustrated in FIG. 6, a firmware download 92 can be initiated to theGroup A drives, i.e., disk drives 14, 16, 24, 26 and 34, in the mannerdescribed above with regard to block 80 in FIG. 4. During the download,the Group A drives are inaccessible, i.e., read and write access isdisabled, and the Group B and C drives are accessible. In response to adetermination as described above with regard to block 82 in FIG. 4 thatthe download to the Group A drives has completed, a download 94 can beinitiated to the Group B drives, i.e., disk drives 18, 20, 28, 36 and38, in the manner described above with regard to block 84 in FIG. 4.(The initiation of an operation in response to another operation isindicated in FIGS. 6 and 7 by an arrow beginning at the end of oneoperation and pointing to the beginning of another operation.) At thistime, i.e., in response to the determination that the download to theGroup A drives has completed, or alternatively, after the downloadoperation to the Group B drives has been initiated, a synchronization ofdata from the Group C drives to the Group A drives can be initiated inthe manner described above with regard to block 86 in FIG. 4.(Synchronization is indicated in FIGS. 6 and 7 by a pair of curvingbroken-line arrows.) In response to a determination as described abovewith regard to block 88 in FIG. 4 that the synchronization hascompleted, and (as indicated by the ampersand “&” or “AND” operator inFIGS. 6 and 7) in response to a determination as described above withregard to block 82 that the download to Group B has completed, adownload 96 can be initiated to the Group C drives, i.e., disk drives22, 30, 32, 40 and 42, in the manner described above with regard toblock 84 in FIG. 4. At this time, i.e., in response to the determinationthat the download to the Group B drives has completed and thesynchronization of data from Group C to Group A has completed, oralternatively, after the download operation to the Group B drives hasbeen initiated, a synchronization of data from the Group A drives to theGroup C drives can be initiated in the manner described above withregard to block 86 in FIG. 4. Alternatively to a synchronization of datafrom the Group A drives to the Group C drives, a synchronization of datafrom the Group B drives to the Group C drives can be initiated, asindicated at the corresponding time in FIG. 7.

Once the code download or other operation has been performed upon alldrive groups, storage array 10 can become available again to the hostsystem for normal reading and writing of user data 68 (FIG. 3). Theabove-described method ensures that any changes to configuration data 70(FIG. 3) in one or more drives that may have occurred during a firmwaredownload to another drive are copied, i.e., synchronized, to the otherdrives.

In view of the descriptions above it should be apparent that so long asa drive is not undergoing the download or other such operation, thedrive can participate in synchronization. The sequences and drive groupsdescribed above with regard to FIGS. 6 and 7 are intended only asexamples, and in view of the descriptions herein, still others willoccur readily to persons skilled in the art. The operation andsynchronizations can be performed upon drive groups in any suitablesequence and in any suitable manner that promotes maximal accessibilityof the mirrored data to storage array controller 12, the host, or othersystem that requires access to the mirrored data.

It should be noted that the invention has been described with referenceto one or more exemplary embodiments for the purpose of demonstratingthe principles and concepts of the invention. The invention is notlimited to these embodiments. For example, although in the exemplaryembodiment the mirrored data is configuration data, and the operationthat can potentially cause loss of access to the mirrored data is afirmware download, in other embodiments the mirrored data can be anyother suitable kind of data, and the operation can be any other suitablekind of operation. As will be understood by persons skilled in the art,in view of the description provided herein, many variations may be madeto the embodiments described herein and all such variations are withinthe scope of the invention.

1. A method of operation for a storage array, the storage array having aplurality of storage devices on which is stored mirrored data, themethod comprising: successively initiating an operation on each of aplurality of groups of storage devices, the operation initiated on anext group of storage devices of the plurality of groups of storagedevices after completion of the operation on a previous group of storagedevices of the plurality of groups of storage devices, each group ofstorage devices comprising at least one storage device, the operationdisabling read and write access to the data stored in the storagedevices of a group of storage devices between initiation and completionof the operation on the group of storage devices; and during theoperation on a group of storage devices, initiating a datasynchronization between two groups of storage devices other than thegroup of storage devices being operated upon.
 2. The method claimed inclaim 1, wherein the data synchronization is not initiated if anotherdata synchronization has not yet completed.
 3. The method claimed inclaim 1, wherein the operation is a software download.
 4. The methodclaimed in claim 1, wherein the data synchronization synchronizesconfiguration data between two groups of storage devices.
 5. The methodclaimed in claim 1, wherein: the storage array comprises a plurality oftrays, each tray having at least one storage device; a first group ofstorage devices comprises at least one storage device of a first trayand one storage device of a second tray; a second group of storagedevices comprises at least one storage device of the first tray and onestorage device of the second tray; and a third group of storage devicescomprises at least one storage device of the first tray and one storagedevice of the second tray.
 6. The method claimed in claim 5, wherein:the storage array comprises at least a first tray, a second tray and athird tray, each of the first, second and third trays having at leastone of the storage devices; and at least one of the first, second andthird groups of storage devices comprises at least one storage device ofthe first tray, at least one storage device of the second tray, and atleast one storage device of the third tray.
 7. The method claimed inclaim 6, wherein: the first group of storage devices comprises at leastone storage device of the first tray, at least one storage device of thesecond tray, and one storage device of the third tray; the second groupof storage devices comprises at least one storage device of the firsttray, at least one storage device of the second tray, and one storagedevice of the third tray; and the third group of storage devicescomprises at least one storage device of the first tray, at least onestorage device of the second tray, and one storage device of the thirdtray.
 8. A storage array system, comprising: a plurality of storagedevices; and a processor system programmed or configured to:successively initiate an operation on each of a plurality of groups ofstorage devices, the operation initiated on a next group of storagedevices of the plurality of groups of storage devices after completionof the operation on a previous group of storage devices of the pluralityof groups of storage devices, each group of storage devices comprisingat least one storage device, the operation disabling read and writeaccess to the data stored in the storage devices of a group of storagedevices between initiation and completion of the operation on the groupof storage devices; and during the operation on a group of storagedevices, initiate a data synchronization between two groups of storagedevices other than the group of storage devices being operated upon. 9.The system claimed in claim 8, wherein the data synchronization is notinitiated if another data synchronization has not yet completed.
 10. Thesystem claimed in claim 8, wherein the operation is a software download.11. The system claimed in claim 8, wherein: the storage array comprisesa plurality of trays, each tray having at least one storage device; afirst group of storage devices comprises at least one storage device ofa first tray and one storage device of a second tray; a second group ofstorage devices comprises at least one storage device of the first trayand one storage device of the second tray; and a third group of storagedevices comprises at least one storage device of the first tray and onestorage device of the second tray.
 12. The system claimed in claim 11,wherein: the storage array comprises at least a first tray, a secondtray and a third tray, each of the first, second and third trays havingat least one of the storage devices; and at least one of the first,second and third groups of storage devices comprises at least onestorage device of the first tray, at least one storage device of thesecond tray, and at least one storage device of the third tray.
 13. Thesystem claimed in claim 12, wherein: the first group of storage devicescomprises at least one storage device of the first tray, at least onestorage device of the second tray, and one storage device of the thirdtray; the second group of storage devices comprises at least one storagedevice of the first tray, at least one storage device of the secondtray, and one storage device of the third tray; and the third group ofstorage devices comprises at least one storage device of the first tray,at least one storage device of the second tray, and one storage deviceof the third tray.
 14. A computer program product for operating astorage array having a plurality of storage devices, the computerprogram product comprising a computer-readable medium on which is storedin computer-readable form code that when executed on the storage arraycauses the storage array to: successively initiate an operation on eachof a plurality of groups of storage devices, the operation initiated ona next group of storage devices of the plurality of groups of storagedevices after completion of the operation on a previous group of storagedevices of the plurality of groups of storage devices, each group ofstorage devices comprising at least one storage device, the operationdisabling read and write access to the data stored in the storagedevices of a group of storage devices between initiation and completionof the operation on the group of storage devices; and during theoperation on a group of storage devices, initiate a data synchronizationbetween two groups of storage devices other than the group of storagedevices being operated upon.
 15. The computer program product claimed inclaim 14, wherein the data synchronization is not initiated if anotherdata synchronization has not yet completed.
 16. The computer programproduct claimed in claim 14, wherein the operation is a softwaredownload.
 17. The computer program product claimed in claim 14, wherein:the storage array comprises a plurality of trays, each tray having atleast one storage device; a first group of storage devices comprises atleast one storage device of a first tray and one storage device of asecond tray; a second group of storage devices comprises at least onestorage device of the first tray and one storage device of the secondtray; and a third group of storage devices comprises at least onestorage device of the first tray and one storage device of the secondtray.
 18. The computer program product claimed in claim 17, wherein: thestorage array comprises at least a first tray, a second tray and a thirdtray, each of the first, second and third trays having at least one ofthe storage devices; and at least one of the first, second and thirdgroups of storage devices comprises at least one storage device of thefirst tray, at least one storage device of the second tray, and at leastone storage device of the third tray.
 19. The computer program productclaimed in claim 18, wherein: the first group of storage devicescomprises at least one storage device of the first tray, at least onestorage device of the second tray, and one storage device of the thirdtray; the second group of storage devices comprises at least one storagedevice of the first tray, at least one storage device of the secondtray, and one storage device of the third tray; and the third group ofstorage devices comprises at least one storage device of the first tray,at least one storage device of the second tray, and one storage deviceof the third tray.